package com.hsgene.product.persistence;

import com.hsgene.product.applets.dto.AppletsGoodsCommentInfoDto;
import com.hsgene.product.applets.dto.AppletsGoodsDetailsInfoDto;
import com.hsgene.product.applets.dto.GoodsCommentListInfoDto;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * 小程序商品详情Repository
 *
 * @author wxf
 * @date 2018/10/11 15:00
 **/
public interface AppletsGoodsRepository {

    /**
     * 获取商品详情
     *
     * @param goodsId 商品id
     * @return
     */
    AppletsGoodsDetailsInfoDto getGoodsDetails(@Param("goodsId") String goodsId);

    /**
     * 获取商品评论信息
     *
     * @param goodsId 商品id
     * @param offset  offset
     * @param size    size
     * @return
     */
    List<AppletsGoodsCommentInfoDto> getGoodsCommentInfo(@Param("goodsId") String goodsId,
                                                         @Param("tableType") Integer tableType,
                                                         @Param("offset") Integer offset,
                                                         @Param("size") Integer size);

    /**
     * 评论总数
     *
     * @param goodsId 商品id
     * @return
     */
    Integer getCommentSumCount(@Param("goodsId") String goodsId);

    /**
     * 获取评论tab信息
     *
     * @param goodsId
     * @return
     */
    GoodsCommentListInfoDto getCommentLabel(@Param("goodsId") String goodsId);

    /**
     * 判断是否已存在
     *
     * @param discountId 优惠券id
     * @param userId     用户id
     * @return
     */
    Integer checkIsExistsDiscount(@Param("discountId") String discountId, @Param("userId") String userId);

    /**
     * 领取优惠券
     *
     * @param discountId 优惠券id
     * @param userId     用户id
     * @param date       时间
     */
    void addGoodsDiscount(@Param("discountId") String discountId, @Param("userId") String userId,
                          @Param("createDate") Date date);

    /**
     * 更新套餐浏览次数
     * @param packageId 套餐ID
     */
    void updatePackageScanCount(@Param("packageId") String packageId);

    /**
     *  获取最大优惠价格
     * @param showPrice 显示价格
     * @param userId 用户id
     * @return
     */
    Double getMaxDiscountPrice(@Param("showPrice") double showPrice, @Param("userId") String userId);
}
